﻿#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
int main()
{
	int x = 9;
	int y = 3;
	printf("%d\n", x ^ y);
	int a = 12;
	int b = 5;
	printf("%d\n", a & b);
	return 0;
}

//#include <stdio.h>
//int main()
//{
//	int i = 1;
//	int ret = (++i) + (++i) + (++i);
//	printf("ret = %d\n", ret);
//	return 0;
//}

//#include <stdio.h>
//int i;
//int main()
//{
//	i--;
//	int b = sizeof(i);
//	if (i > sizeof(i))
//	{
//		printf(">\n");
//	}
//	else
//	{
//		printf("<\n");
//	}
//	return 0;
//}

//在一个整型数组中，只有一个数字出现一次，其他数组都是成对出现的，请找出那个只出现一次的数字。
//例如：数组中有：1 2 3 4 5 1 2 3 4，只有5出现一次，其他数字都出现2次，找出5
//#include<stdio.h>
//int Fun(int arr[], int sz)
//{
//	int t = 0;
//	for (int i = 0; i < sz; i++)
//	{
//		t = t ^ arr[i];
//	}
//	return t;
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,1,2,3,4 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//
//	int ret = Fun(arr, sz);
//	printf("%d\n", ret);
//	return 0;
//}


////不允许创建临时变量，交换两个整数的内容
//#include<stdio.h>
//int main()
//{
//	int a, b;
//	scanf("%d %d", &a, &b);
//	printf("交换前:a=%d b=%d\n", a, b);
//
//	int t = 0;
//	t = a ^ b;
//	b = b ^ t;
//	a = a ^ t;
//	printf("交换后:a=%d b=%d\n", a, b);
//	return 0;
//}


//写一个函数返回参数二进制中 1 的个数。比如： 15    0000 1111    4 个 1
//#include<stdio.h>
//int main()
//{
//	int count = 0;
//	int n = 0;
//	scanf("%d", &n);
//	for (int i = 0; i < 32; i++)
//	{
//		if (((n >> i)&1) == 1)
//			count++;
//	}
//	printf("%d\n", count);
//	return 0;
//}


//获取一个整数二进制序列中所有的偶数位和奇数位，分别打印出二进制序列
//#include<stdio.h>
//int main()
//{
//	int x = 0;
//	scanf("%d", &x);
//	int i = 0;
//	for (i = 0; i < 32; i + 2)   //奇数位
//	{
//		if (((x >> i) | 0) == 1)
//			printf("1 ");
//		else
//			printf("0 ");
//	}
//	for (i = 1; i < 32; i + 2)   //偶数位
//	{
//		if (((x >> i) | 0) == 1)
//			printf("1 ");
//		else
//			printf("0 ");
//	}
//	return 0;
//}




//#include <stdio.h>  
//#include <string.h>  
//
// 
//void Bit(char* str, int bit) {
//    int len = strlen(str);
//    str[len] = '0' + bit;
//    str[len + 1] = '\0';
//}
//
//int main() {
//    int num;
//    char even[33] = "", odd[33] = ""; 
//
//    printf("请输入一个整数: ");
//    scanf("%d", &num);
//
//    int Pos = 0;
//    while (num > 0) {
//        int bit = num & 1; // 获取最低位  
//        if (Pos % 2 == 0) {
//            Bit(even, bit); // 偶数位  
//        }
//        else {
//            Bit(odd, bit); // 奇数位  
//        }
//        num >>= 1; // 右移一位  
//        Pos++;
//    }
//
//    if (Pos % 2 != 0) {
//        Bit(even, 0);
//    }
//
//    printf("偶数位二进制序列: %s\n", even);
//    printf("奇数位二进制序列: %s\n", odd);
//
//    return 0;
//}





//
////编程实现：两个int（32位）整数m和n的二进制表达中，有多少个位(bit)不同？ 输入例子:1999 2299输出例子 : 7
//#include <stdio.h>
//
//int main() {
//    int a, b;
//    while (scanf("%d %d", &a, &b) != EOF) { // 注意 while 处理多个 case
//        // 64 位输出请用 printf("%lld") to 
//        int c = a ^ b;
//        int count = 0;
//        while (c != 0)
//        {
//            if (c % 2 == 1)
//                count++;
//            c /= 2;
//        }
//        printf("%d", count);
//    }
//
//    return 0;
//}
